// import { Node, Vec3 } from "cc";
// import { ecs } from "db://app-game/libs/ecs/ECS";
// import { ECSEntity } from "db://app-game/libs/ecs/ECSEntity";
// import { JoysitickModelComp } from "../model/JoysitickModelComp";
// import { JoystickManagerComp } from "../view/JoystickManagerComp";
// import { app } from "db://app-game/core/app";

// @ecs.register("Joysitick")
// export class JoysitickSystem
//   extends ecs.ComblockSystem
//   implements ecs.ISystemUpdate
// {
//   filter(): ecs.IMatcher {
//     return ecs.allOf(JoysitickModelComp, JoystickManagerComp);
//   }

//   update(entity: ECSEntity, dt: number) {
//     const move = entity.get(JoysitickModelComp);
//     if (move.control.move) {
//       this.move(move);
//     }
//   }

//   /** 移动 */
//   move(move: JoysitickModelComp) {
//     if (move.input.length() > 0) {
//       const speed = move.input.normalize().multiplyScalar(move.speed);
//       move.target.translate(speed, Node.NodeSpace.LOCAL);
//       if (move.control.direction) {
//         this.direction(move);
//       }
//     }
//   }

//   /** 方向 */
//   direction(move: JoysitickModelComp) {
//     const angle = this.getAngle(move.input);
//     move.target.getChildByName("body").setRotationFromEuler(0, 0, angle - 90);
//   }
//   getAngle(dir: Vec3) {
//     let rot: number;
//     if (dir.x === 0 && dir.y > 0)
//       //y上半轴
//       rot = 90;
//     else if (dir.x === 0 && dir.y < 0)
//       //y下半轴
//       rot = 270;
//     else {
//       let r: number = Math.atan(dir.y / dir.x);
//       let d: number = (r * 180) / Math.PI;
//       rot = d;
//     }

//     if (rot === 0)
//       if (dir.x > 0)
//         //在x轴上
//         rot = 0;
//       else rot = 180;
//     else if ((dir.x < 0 && dir.y > 0) || (dir.x < 0 && dir.y < 0))
//       //在第二三象限
//       rot += 180;
//     else if (dir.x > 0 && dir.y < 0)
//       //在第四象限
//       rot += 360;
//     return rot;
//   }
// }
